package controllers;

import java.sql.SQLException;
import java.util.List;

import models.Fornecedor;
import models.Usuario;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import service.FornecedorDAO;
import exceptions.BusinessException;

public class FornecedorApplication extends Controller {

	// CONSTANTES COM O NOME DO CAMPO NA VIEW
	public static final Form<Fornecedor> fornecedorForm = Form
			.form(Fornecedor.class);

	public static Result index() {
		FornecedorDAO dao = new FornecedorDAO();
		try{
			List<Fornecedor> fornecedores = dao.buscarTodosFornecedores();
			return ok(views.html.fornecedor.render(fornecedores));
		}catch (Exception e) {
			flash("erro", play.i18n.Messages.get("global.erro"));
			return ok(views.html.principal.render(Form
					.form(Usuario.class)));
		}
	}
	
	public static Result fornecedorCadastro() {
		return ok(views.html.fornecedorCadastro.render(fornecedorForm));
	}
	
	
	public static Result cadastrar() {
		Form<Fornecedor> request = fornecedorForm.bindFromRequest();
		Fornecedor fornecedor = request.get();

		FornecedorDAO dao = new FornecedorDAO();
		
		try {
			dao.cadastrarFornecedor(fornecedor);
			
			flash("sucesso", "Fornecedor cadastrado com sucesso");
			return index();
		} catch (SQLException e) {
			flash("erro", play.i18n.Messages.get("global.erro"));
			return index();
		} catch (BusinessException bex) {
			flash("erro", "CNPJ desse fornecedor já foi cadastrado anteriormente");
			return ok(views.html.fornecedorCadastro.render(fornecedorForm));
		} 
	}

	
}
